package dmsxl.tanxin;

import java.util.Arrays;
import java.util.LinkedList;

/**
 * Author: Zhang Dongwei
 * Date: 2023/8/1 11:19
 */
public class tx14_406 {

    public static void main(String[] args) {
        int[][] people = {{7, 0}, {4, 4}, {7, 1}, {5, 0}, {6, 1}, {5, 2}};
        int[][] res = reconstructQueue(people);
        for (int i = 0; i < people.length; i++){
            System.out.println(Arrays.toString(people[i]));
        }
    }

//    答案
    public static int[][] reconstructQueue(int[][] people) {
        // 身高从大到小排（身高相同k小的站前面）
        Arrays.sort(people, (a, b) -> {
            if (a[0] == b[0]) return a[1] - b[1];   // a - b 是升序排列，故在a[0] == b[0]的狀況下，會根據k值升序排列
            return b[0] - a[0];   //b - a 是降序排列，在a[0] != b[0]，的狀況會根據h值降序排列
        });
        LinkedList<int[]> que = new LinkedList<>();
        for (int[] p : people){
            que.add(p[1],p);   //Linkedlist.add(index, value)，會將value插入到指定index裡。
        }
        return que.toArray(new int[people.length][]);
    }
}
